
package com.yyf.springboot2.common;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class FileUtils {

	public static Map<String, String> FILE_TYPE_MAP = new HashMap<String, String>();

	static {
		FILE_TYPE_MAP.put("jpg", "FFD8FF"); // JPEG (jpg)
		FILE_TYPE_MAP.put("png", "89504E47"); // PNG (png)
		FILE_TYPE_MAP.put("gif", "47494638"); // GIF (gif)
		FILE_TYPE_MAP.put("bmp", "424D"); // Windows Bitmap (bmp)
		FILE_TYPE_MAP.put("png", "89504E470D0a1a0a0000"); // PNG (png)
		FILE_TYPE_MAP.put("bmp", "424d228c010000000000"); // 16色位图(bmp)
		FILE_TYPE_MAP.put("bmp", "424d8240090000000000"); // 24位位图(bmp)
		FILE_TYPE_MAP.put("bmp", "424d8e1b030000000000"); // 256色位图(bmp
	}
	/**
	 * 
	 * @Description： 判断文件类型 
	 * @param b
	 * @return
	 * @author:  
	 * @since: 2017年8月24日 下午2:47:56
	 */
	public static String getFileTypeByStream(byte[] b) {
		String filetypeHex = String.valueOf(getFileHexString(b));
		Iterator<Entry<String, String>> entryiterator = FILE_TYPE_MAP.entrySet().iterator();
		while (entryiterator.hasNext()) {
			Entry<String, String> entry = entryiterator.next();
			String fileTypeHexValue = entry.getValue().toUpperCase();
			if (filetypeHex.toUpperCase().startsWith(fileTypeHexValue)) {
				return entry.getKey();
			}
		}
		return null;
	}
	/**
	 * 
	 * @Description： 获取文二进制文本
	 * @param b
	 * @return
	 * @author:  
	 * @since: 2017年8月24日 下午2:47:19
	 */
	public static String getFileHexString(byte[] b) {
		StringBuilder stringBuilder = new StringBuilder();
		if (b == null || b.length <= 0) {
			return null;
		}
		for (int i = 0; i < b.length; i++) {
			int v = b[i] & 0xFF;
			String hv = Integer.toHexString(v);
			if (hv.length() < 2) {
				stringBuilder.append(0);
			}
			stringBuilder.append(hv);
		}
		return stringBuilder.toString();
	}
}
